package com.css.sword.knowing.search.aggregation;

import java.io.IOException;
import java.util.List;
import java.util.Map;

import org.elasticsearch.common.xcontent.XContentBuilder;
import org.elasticsearch.common.xcontent.XContentFactory;

import com.css.sword.knowing.search.util.ToJson;

/**
 * 聚合运算结果类
 *
 */
public class AggResult {
    private List<MetricsResult> metricsResults;
    private Map<String, List<BucketResult>> bucketResultMap;

    /**
     * 获取分组运算结果
     * @return 分组运算的结果，Map类型，每个key对应一个分组结果集合，详细使用见demo
     */
    public Map<String, List<BucketResult>> getBucketResultMap() {
        return bucketResultMap;
    }

    /**
     * 设置分组运算结果
     * @param bucketResultMap 分组运算的结果集
     */
    public void setBucketResultMap(Map<String, List<BucketResult>> bucketResultMap) {
        this.bucketResultMap = bucketResultMap;
    }

    /**
     * 获取按指标统计运算结果
     * @return MetricsResult列表，详细使用见demo
     */
    public List<MetricsResult> getMetricsResults() {
        return metricsResults;
    }

    /**
     * 设置按指标统计的运算结果
     * @param metricsResults MetricsResult列表
     */
    public void setMetricsResults(List<MetricsResult> metricsResults) {
        this.metricsResults = metricsResults;
    }
    
    /**
     * 检索结果集转成json字符串格式
     * 
     * @return json字符串
     * @throws IOException 
     */
    public String toJson() throws IOException {
			XContentBuilder jsonBuilder = XContentFactory.jsonBuilder().startObject();
						
	    	ToJson.getAggResultJson(jsonBuilder, this);
	   
	    	jsonBuilder.endObject();
	    	return jsonBuilder.string();
    }
}
